/*
 * ================================================================================变量定义区
 */
var showCount = 10; 		 // 定义每页显示条数
var currentPage = 1;		 // 全局变量，当前页

var treeNode; 				 // 组织机构树节点
var operateType = 0; 		 // 区分新增加组织机构还是更新组织机构[0：新增加组织机构，1：更新组织机构]
var chooseIds = new Array(); // 选定的部门标识数组

var type=1;					//加入到这个组织机构	
/*
 * ================================================================================页面初始化函数
 */
$(function()
{
	
	// 加载组织机构树
	departmentTree();
	
	// 为部门中增加用户
	$("#addUsers").click(function()
	{
		popupUser();
	}
	);

	// 从部门中删除用户
	$("#deleteUsers").click(function()
	{
		deleteUsers();
	}
	);
	
	// 提交部门修改
	$("#btnSubmit").click(function()
	{
		submitData();
	}
	);

	// 取消提交部门变更
	$("#btnCancel").click(function()
	{
		showDepartmentUsersTab();
	}
	);

	// 显示增加部门模块
	$("#showAddDiv").click(function()
	{
		addDepartment();
	}
	);

	// 显示修改部门模块
	$("#showUpdateDiv").click(function()
	{
		updateDepartment();
	}
	);
	
	// 删除部门
	$("#deleteDepartment").click(function()
	{
		deleteDepartment();
	}
	);
	
}
);


/*
 * ================================================================================函数定义区
 * 
 */

/**
 * 验证部门提交的字段
 */
function submitData()
{

	// 设置表单中的规则
	var validateRules = 
	{
				
			// 自定义校验规则
			rules:
			{
				deptName:
				{
					required			: true,
					maxlength			: 64,
					remote:
					{
						type:"post",
						async: false,
						url:BASE_PATH+"/departmentManagement/departmentValidate.do",
						data:
						{
							deptId	: function()
							{
								var deptId = "";
								if( operateType == 1)
								{	// 更新组操作
									deptId = treeNode.id;
								}
								return deptId;
							},
							deptName	:	function()
							{
								return $.trim($("#deptName").val());
							},
							parentId:	function()
							{
								var parentId = 0;
								if( operateType == 0)
								{	// 新建组操作
									parentId = treeNode.id;
									
								} 
								else if( operateType == 1)
								{	// 更新组操作
									parentId = treeNode.pId;
									if( parentId == null )
									{
										parentId = "";
									}
								}
								return parentId;
							}
			             }
			        }
				},
				
				deptDesc:
				{
					maxlength:128
				}
			},
			
			// 自定义校验提示信息
			messages:
			{
				deptName:
				{
					required	:"请输入dept_name",
					maxlength	:"dept_name过长，请重新输入",
					remote		:jQuery.format("dept_name已存在，请重新输入")
				},
				
				deptDesc:
				{
					maxlength	:"dept_desc过长，请重新输入"
				}
			}
	};	
	
	var validateResult = $("#departmentForm").validate(validateRules).form();
	if(!validateResult)
	{
		openAlert("请按提示填写完整信息");
		return;
	}
	else
	{
		if( operateType == 0)// 新建组操作
		{	
			
			// 验证通过向数据库插入
			insertDepartmentCommit();
			
		} 
		else if( operateType == 1)// 更新组操作
		{	

			// 验证通过向数据库插入
			updateDepartmentCommit();
		}
	}
}

/**
 * 加载树和树的点击事件
 */
function departmentTree()
{
	var setting = 
	{
			data: 
			{
				key: 
				{
					title:"titleTip"
				},
				simpleData: 
				{
					enable: true
				}
			},
			callback: 
			{
				onClick: showDepartmentUsers
			}
		};

	var zNodes = '[';
	$.ajax(
	{
		type: 'POST',
        url: BASE_PATH +'/departmentManagement/queryDepartments.do',
        dataType:"json",
        data:
        {
        },
        success:function(data,textStatus)
        {
        	for( var i = 0; i < data.length; i++ )
        	{
        		zNodes += '{id:' + data[i].deptId + ',';
        		zNodes += 'pId:' + data[i].parentId + ',';
        		zNodes += 'name:"' + convertSpecialChar( data[i].deptName ) + '",';
        		zNodes += 'titleTip:"' + convertSpecialChar( data[i].deptName ) + '",';
        		if( data[i].deptDesc == null )
        		{
            		zNodes += 'deptDesc:"",';
        		} 
        		else 
        		{
            		zNodes += 'deptDesc:"' + convertSpecialChar( data[i].deptDesc ) + '",';
        		}
        		zNodes += 'isLeaf:"' + data[i].isLeaf + '",';
        		zNodes += 'open:true}';
        		
        		if( i != (data.length - 1) )
        		{
        			zNodes += ',';
        		}
        	}
        	zNodes += ']';
    		// 加载树
    		$.fn.zTree.init($("#departmentTree"), setting, eval(zNodes));

    		$("#departmentTree_1_a").trigger("click");
        },
		error:function(e)
		{
			openAlert("加载数据错误！"); 
			return;
		}
	}
	);
}

/**
 * 点击树节点展示树下所有用户信息
 * 
 * @param event
 * @param treeId
 * @param treeNode	
 * @param clickFlag
 */
function showDepartmentUsers(event, treeId, tempTreeNode, clickFlag) 
{
	
	if( treeNode != null && treeNode.id != tempTreeNode.id )
	{

		// 切换节点 ，都从第一页开始
		currentPage = 1;
	}
	
	// 全局变量赋予树节点ID
	treeNode = tempTreeNode;

	// 只有叶节点添加用户按钮和删除按钮
	if( treeNode.isLeaf == 1 )
	{
		$("#operateUserDiv").show();
	} 
	else 
	{
		$("#operateUserDiv").hide();
	}
	
	//初始化列表，取第一页数据
	getDataList(currentPage);
	
	// 列表和新建（或修改）相互切换
	showDepartmentUsersTab();
}			

/**
 * 获取列表数据
 * @param pageIndex 请求的页码
 */
function getDataList(pageIndex)
{
	$.ajax(
	{
		type: 'POST',
		async: false,
        url: BASE_PATH +'/departmentManagement/queryUsersInDepartment.do',
        dataType:"json",
        data:
        {
        	"showCount"		                    :showCount,
        	"currentPage"	                    :pageIndex,
        	"deptId"		                    :treeNode.id,
        	"survey_id"							:"",
        	"type"								:type,
        	"query_condition_field_list"		:"survey_id,deptId,type"          
        },
        cache:false,
        success:function(data,textStatus)
        {
        	var html = "";        	
        	var pageData = data;
        	var totalResult = pageData.queryParam.totalResult;
        	if(pageData.queryResult != null)
        	{
        		
        		// 获取分页数据，构造列表展示
	        	$.each(pageData.queryResult,function(i,n)
	        	{
	        		html += '<tr onclick="chooseRow(this,false);"  id="tr_index_'+i+'" class="chooseUser">';
	        		html += '<td title='+switcHtml(n.username) +'><input type="hidden" value="'+ switcHtml(n.username) +'"/>'+ switcHtml(n.username) +'</td>';
	        		html += '<td style="text-align:left;" title='+ switcHtml(n.cn_name) +'>'+ switcHtml(n.cn_name) +'</td>';
	        		html += '<td style="text-align:left;" title='+ switcHtml(n.dept_name) +'>'+ switcHtml(n.dept_name) +'</td>';
	        		html += '</tr>';
	        	}
	        	);  
        	} 
        	else
        	{
        		html = '<tr><td colspan="2">No items.</td></tr>';
        	}
        	$('#tBodyList').html(html);
        	
        	currentPage = pageIndex;
    		if(totalResult == 0)
    		{
    			$('#tBodyList').html('<tr><td style="text-align:center;">No items.</td></tr>');
    			
    			// 没有记录的时候，隐藏分页插件
    			$("#pagination").hide();
    		} 
    		else 
    		{
    			// 创建分页
    			$("#pagination").show();
    			$("#pagination").pagination(totalResult, 
    			{
    				num_edge_entries: 1, //边缘页数
    				num_display_entries: 3, //主体页数
    				current_page:currentPage,
    				callback: getDataList,
    				items_per_page:showCount //每页显示1项
    			}
    			);
    		};
        },
		error:function(e)
		{
			openAlert("加载数据错误！"); 
			return;
		}
	}
	);
} 

/**
 * 点击新增加组织机构按钮
 */
function addDepartment()
{
	$("#deptName").removeClass("validate-input-error");
	$("div[for='deptName']").remove();
	
	$("#userListTable").hide();
	$("#groupInfoDiv").show();
	
	$("#deptName").val( "" );
	$("#deptDesc").val( "" );
	operateType = 0;
}

/**
 * 点击更新组织机构按钮
 */
function updateDepartment()
{
	$("#deptName").removeClass("validate-input-error");
	$("div[for='deptName']").remove();
	$("#userListTable").hide();
	$("#groupInfoDiv").show();
	
	operateType = 1;
	var deptDesc = treeNode.deptDesc;
	var deptName = treeNode.name;
	$("#deptName").val( deptName );
	$("#deptDesc").val( deptDesc );
}

/**
 * 更新一个组织机构
 */
function updateDepartmentCommit() 
{
	
	if ( treeNode.id ) 
	{
		$.ajax(
		{
			type: 'POST',
			url : BASE_PATH + "/departmentManagement/updateDepartment.do",
	        dataType:"json",
	        async: false,
	        data:
	        {
	        	"deptId"			:	treeNode.id,
	        	"deptName"			:	$.trim($("#deptName").val()),
	        	"deptDesc" 			:	$.trim($("#deptDesc").val()),
	        	"last_modify_user"	:	$("#singleIdHidden").attr("value")
	        },
			success : function( data ) 
			{
				if( data == 'success' )
				{
					openAlert('更新成功',function()
					{
						location.reload();
					}
					);
				}
				else
				{
					openAlert('更新失败');
				}
			}
		}
		);
	} 
	else 
	{
		openAlert("请选择一个组织机构！");
	}
}

/**
 * 插入一个组织机构
 */
function insertDepartmentCommit() 
{
	var deptName = $.trim($("#deptName").val());
	var deptDesc = $.trim($("#deptDesc").val());
	
	$.ajax(
		{
		type: 'POST',
		url : BASE_PATH + "/departmentManagement/insertDepartment.do",
        dataType:"json",
        async: false,
        data:
        {
        	"parentId"			:	treeNode.id,
        	"create_user"		:	$("#singleIdHidden").attr("value"),
        	"deptName"			:	deptName,
        	"deptDesc"			:	deptDesc,
        	"last_modify_user"  :   $("#singleIdHidden").attr("value")
        },
		success : function( data ) 
		{
			if( data == 'success' )
			{
				openAlert('新增成功',function()
				{
					location.reload();
				}
				);
			} 
			else
			{
				openAlert('新增失败');
			}
		}
	}
	);
}

/**
 * 删除一个组织机构
 */
function deleteDepartment() 
{
	
	showDepartmentUsersTab();
	
	var temArr = new Array();
	temArr.push(1);
	openConfirm("确认删除选中的组织机构吗？", this, function()
	{
		if ( treeNode.id ) 
		{
			$.ajax(
			{
				type: 'POST',
				url : BASE_PATH + "/departmentManagement/deleteDepartment.do",
				dataType:"json",
		        data:
		        {
		        	"deptId" :	treeNode.id
		        },
				success : function( data ) 
				{
					if( data == 'success' )
					{
						openAlert('删除成功',function()
						{
							location.reload();
						}
						);
					} 
					else
					{
						openAlert('删除失败');
					}
				}
			}
			);
		} 
		else 
		{
			openAlert("请选择一个组织机构！");
		}
	}
	, temArr);
}

/**
 * 展示组织机构列表
 */
function showDepartmentUsersTab()
{
	$("#userListTable").show();
	$("#deptName").removeClass("validate-input-error");
	$("div[for='deptName']").remove();
	$("#groupInfoDiv").hide();
}

/**
 * 选择一行
 */
function chooseRow(o) 
{
	var id = $(o).attr("id");
	var flag = false;
	var index = null;
	if (chooseIds.length > 0) 
	{
		for (var i = 0; i < chooseIds.length; i++) 
		{
			if (chooseIds[i] == id) 
			{
				index = i;
				flag = true;
				break;
			}
		}
	}
	
	if (flag) 
	{
		$(o).removeClass("list_choosedRow");
		chooseIds = deleteArrayByIndex(index, chooseIds);
	} 
	else 
	{
		$(o).addClass("list_choosedRow");
		chooseIds.push(id);
	}
}

/**
 * 选择用户
 */
function deleteUsers() 
{
	if (chooseIds.length > 0) 
	{
		var userNames = new Array();
		
		for( var i = 0; i < chooseIds.length; i++ )
		{
			var userName = $("#" + chooseIds[i] ).children("td").first().text();
			
			// 拼接需要移除的用户集合
			userNames.push( encodeURIComponent(userName) );
		}
		
		var tempar = new Array();
		tempar.push(1);
		openConfirm("确认从组织中移除选定的用户吗？", this, function()
		{
			$.ajax(
			{
				type: 'POST',
				url : BASE_PATH + "/departmentManagement/removeUserFromDepartment.do?userNames=" + encodeURIComponent(userNames),
		        dataType:"json",
		        data:
		        {
		        },
				success : function( data ) 
				{
					if( data == 'success' )
					{
						
						// 点击树节点
						$("#" + treeNode.tId + "_a").trigger("click");
						
						openAlert('移除用户成功',function()
						{
							
							// 删除用户成功后，清空之前已经选中的用户ID，重置chooseIds
							chooseIds = new Array();
							
						}
						);
					} 
					else
					{
						openAlert('移除用户失败');
					}
				}
			}
			);
		}
		, tempar);
	} 
	else 
	{
		openAlert("请至少选择一个用户！"); 
	}
}

/**
 * 弹出选择用户模态窗口，添加用户
 */
function popupUser()
{
	if( treeNode != undefined && treeNode.isLeaf == 1 )
	{
		
		// 弹出添加用户弹出窗口的同时，清除掉在组织结构用户列表中选中的用户
		chooseIds = new Array();
		
		var param = new Array();
		param.push(treeNode);
		param.push(window);

		popUpPanel( BASE_PATH+"/departmentManagement/addUser_sitemesh_popup.do", param,1000,570 );
		$("#" + treeNode.tId + "_a").trigger("click");
	} 
	else 
	{
		openAlert("只允许向最底层组织机构添加用户！"); 
	}
}

/**
 * 转义含单引号或者双引号的参数
 * @param parameter 
 * @return parameter
 */
function convertSpecialChar( parameter )
{
	if( parameter != undefined && parameter != null && parameter != "" )
	{
		parameter = parameter.replace(/"/g, "\\\"").replace(/'/g, "\\\'");
	}
	return parameter;
}